聚类是试图将数据集中的样本划分为若干个不相交的子集。每个子集称为一个“簇”(cluster)。聚类既能作为一个单独的过程,也可以作为分类等其他学习任务的前驱任务、例如,在一些商业应用中,需要对新用户的类型进行判别,但是定义“用户l类型”对商家来说可不容易,此时,往往先对用户数据进行聚类,根据聚类结果将每个簇定义为一个类,然后再基于这些类训练分类模型,用于判别新用户的类型。
网上有各种详细的总结,总结的非常好,但是太多。本文做个简单的总结
聚类算法的系统性比较
聚类算法 |
思想 |
代表性算法及使用条件 |
优缺点 |
1、基于层次 | 1、将每个数据看成一类,计算两两之间的距离; 2、将距离最小的两个类合并为新类; 3、重新计算新类与其他所有的类之间的距离; 4、重复2~3,直到所有的类合并为一类 |
适合小数量级的聚类; 改进的算法有:BIRCH、chaneleon(比 BIRCH 更好用) |
优点: 1、可解释性好; 2、可以应用在 K-means 先去 K 值比较大的时候的最后合并阶段;能帮助解决k-means 不能解决的非凸数据 缺点: 1、时间复杂度高 2、贪心算法,一步错步步错 |
2、基于划分 | 基本思想:类内的点足够近、类间的点足够远 k-means 基本步骤: 1、随机选择 K 个点 ,当成 k 类 2、遍历所有的点,根据距离,将点归属到 k 个类别中 3、重新计算 k 个类中每一个类的中心点ÿ |